<?php

/**
 * asignarestudiante actions.
 *
 * @package    atenea
 * @subpackage asignarestudiante
 * @author     Your name here
 * @version    SVN: $Id: actions.class.php 2288 2006-10-02 15:22:13Z fabien $
 */
class asignarestudianteActions extends autoasignarestudianteActions
{
	  public function executeIndex()
  {
    return $this->forward('asignarestudiante', 'list');
  }

 
  public function executeList()
  {
    $this->processSort();

    $this->processFilters();


    // pager
    $this->pager = new sfPropelPager('Ateneausuario', 20);
    $c = new Criteria();
    $c->add(RolPeer::DESCRIPCION,'Profesor Asesor');
    $c->addJoin(RolPeer::ID,AteneausuarioPeer::ROL_ID);
    $c->addDescendingOrderByColumn(AteneausuarioPeer::ID);
    $this->addSortCriteria($c);
    $this->addFiltersCriteria($c);
    $this->pager->setCriteria($c);
    $this->pager->setPage($this->getRequestParameter('page', 1));
    $this->pager->init();
  }

  public function executeCreate()
  {
    return $this->forward('asignarestudiante', 'edit');
  }

  public function executeSave()
  {
    return $this->forward('asignarestudiante', 'list');
  }

  public function executeEdit()
  {

    $this->ateneausuario = $this->getAteneausuarioOrCreate();
    $objAteneausuario= new Ateneausuario();
    $this->datoPersonal = $objAteneausuario->getObjDatoPersonal($this->ateneausuario->getId());

    if ($this->getRequest()->getMethod() == sfRequest::POST)
    {
      //$this->updateAteneausuarioFromRequest();

      $this->saveAteneausuario($this->ateneausuario);

      /*$this->setFlash('notice', 'Your modifications have been saved');

      if ($this->getRequestParameter('save_and_add'))
      {
        return $this->redirect('asignarestudiante/create');
      }
      else if ($this->getRequestParameter('save_and_list'))
      {
        return $this->redirect('asignarestudiante/list');
      }
      else
      {
        return $this->redirect('asignarestudiante/edit?id='.$this->ateneausuario->getId());
      }  */
    }
    else
    {
      $this->labels = $this->getLabels();
    }






     /* $this->ateneausuario = $this->getAteneausuarioOrCreate();

      $this->saveAteneausuario($this->ateneausuario);
        		    $objDatoPersonal = new DatoPersonal();
         		    $this->ced = $this->getRequestParameter('cedula');
         			$datos = $objDatoPersonal->getDatoPersonalConCed($this->ced);
         			if ($datos == null)
         			{

         				$this->setFlash('notice', 'Esta cedula no le pertenece a un profesor');
         				return $this->forward('asignarestudiante', 'datos');

         			}


         		$this->datoPersonal =$datos;
         		$this->getUser()->setAttribute('idProfe', $datos->getUsuarioId());


*/


     // $this->setFlash('notice', 'Los estudiantes han sido registrados');

  }



  public function executeDelete()
  {
    $this->ateneausuario = AteneausuarioPeer::retrieveByPk($this->getRequestParameter('id'));
    $this->forward404Unless($this->ateneausuario);

    try
    {
      $this->deleteAteneausuario($this->ateneausuario);
    }
    catch (PropelException $e)
    {
      $this->getRequest()->setError('delete', 'Could not delete the selected Ateneausuario. Make sure it does not have any associated items.');
      return $this->forward('asignarestudiante', 'list');
    }

    return $this->redirect('asignarestudiante/list');
  }

  public function handleErrorEdit()
  {
    $this->preExecute();
    $this->ateneausuario = $this->getAteneausuarioOrCreate();
    $this->updateAteneausuarioFromRequest();

    $this->labels = $this->getLabels();

    return sfView::SUCCESS;
  }

  protected function saveAteneausuario($ateneausuario)
  {

      // Update many-to-many for "estudiantecondicion"
      $c = new Criteria();
      $c->add(AsignarEstPeer::PROFESOR_ID, $ateneausuario->getPrimaryKey());
      //AsignarEstPeer::doDelete($c);
      $idP = $ateneausuario->getPrimaryKey();
	  //echo $this->getUser()->getAttribute('idP');
      $ids = $this->getRequestParameter('associated_estudiantecondicion');

      if (is_array($ids))
      {

        foreach ($ids as $id)
        {
          $c1 = new Criteria();
          $c1->add(AsignarEstPeer::PROFESOR_ID,$idP);
          $c1->add(AsignarEstPeer::ESTUDIANTE_ID,$id);
          $arr =  SolicitudTallerPeer::doSelectOne($c1);

		   if ($arr == null)
           {
           $AsignarEst = new AsignarEst();
           $AsignarEst->setProfesorId($idP);
           $AsignarEst->setEstudianteId($id);
           $AsignarEst->save();


        }
      }
      return $this->redirect('asignarestudiante/list');


      }

  	/*
      // Update many-to-many for "estudiantecondicion"

      if (!$ateneausuario)
      {

      }
      else
      {
      $c = new Criteria();
      $idP = $ateneausuario->getPrimaryKey();
      $c->add(AsignarEstPeer::PROFESOR_ID, $idP);

      $ids = $this->getRequestParameter('associated_estudiantecondicion');

      if (is_array($ids))
       {

        foreach ($ids as $id)
        {
          $c1 = new Criteria();
          $c1->add(AsignarEstPeer::PROFESOR_ID,$idP);
          $c1->add(AsignarEstPeer::ESTUDIANTE_ID,$id);
          $arr =  SolicitudTallerPeer::doSelectOne($c1);

		   if ($arr == null)
           {
           $AsignarEst = new AsignarEst();
           $AsignarEst->setProfesorId($idP);
           $AsignarEst->setEstudianteId($id);
           $AsignarEst->save();
          }
         }
       }
     } */
  }


  protected function deleteAteneausuario($ateneausuario)
  {
    $ateneausuario->delete();
  }

  protected function updateAteneausuarioFromRequest()
  {
    $ateneausuario = $this->getRequestParameter('ateneausuario');

    if (isset($ateneausuario['estudiantecondicion']))
    {
      $this->ateneausuario->setEstudiantecondicion($ateneausuario['estudiantecondicion']);
    }
  }

  protected function getAteneausuarioOrCreate($id = 'id')
  {

	 if (!$this->getRequestParameter($id))
	 {
	  $idu = $this->getUser()->getAttribute('idP');
      //echo 'no'.$idu;
      $ateneausuario = AteneausuarioPeer::retrieveByPk($idu);
	 }
	 else
	 {  //echo 'si';
	 	$ateneausuario = AteneausuarioPeer::retrieveByPk($this->getRequestParameter($id));
	 	$this->getUser()->setAttribute('idP',$ateneausuario->getPrimaryKey());
	 }


	  return $ateneausuario;


  }
  protected function processFilters()
  {
  }

  protected function processSort()
  {
    if ($this->getRequestParameter('sort'))
    {
      $this->getUser()->setAttribute('sort', $this->getRequestParameter('sort'), 'sf_admin/ateneausuario/sort');
      $this->getUser()->setAttribute('type', $this->getRequestParameter('type', 'asc'), 'sf_admin/ateneausuario/sort');
    }

    if (!$this->getUser()->getAttribute('sort', null, 'sf_admin/ateneausuario/sort'))
    {
    }
  }

  protected function addFiltersCriteria($c)
  {
  }

  protected function addSortCriteria($c)
  {
    if ($sort_column = $this->getUser()->getAttribute('sort', null, 'sf_admin/ateneausuario/sort'))
    {
      $sort_column = AteneausuarioPeer::translateFieldName($sort_column, BasePeer::TYPE_FIELDNAME, BasePeer::TYPE_COLNAME);
      if ($this->getUser()->getAttribute('type', null, 'sf_admin/ateneausuario/sort') == 'asc')
      {
        $c->addAscendingOrderByColumn($sort_column);
      }
      else
      {
        $c->addDescendingOrderByColumn($sort_column);
      }
    }
  }

  protected function getLabels()
  {
    return array(
      'ateneausuario{id}' => 'Id:',
      'ateneausuario{estudiantecondicion}' => 'Seleccione los estudiantes a asignar:',
    );
  }
}
